Міністерство освіти і науки УкраїниНаціональний університет «Львівська політехніка»
Розрахункова роботаз дисципліни: «Технології розподілених систем та паралельних обчислень»Варіант - 6
ЗМІСТ
Вступ
Апаратне та програмне забезпечення
Апаратне
Програмне
Опис
Використання бібліотеки
Ключове слово restrict
Інсталяція та конфігурація
Приклад використання бібліотеки
Висновок
Використані джерела
Вступ
Паралельні обчислення — це форма обчислень, в яких кілька дій проводяться одночасно[1]. Грунтуються на тому, що великі задачі можна розділити на кілька менших, кожну з яких можна розв'язати незалежно від інших.
Паралельні комп'ютери можуть бути грубо класифіковані згідно з рівнем, на якому апаратне забезпечення підтримує паралелізм: багатоядерність, багатопроцесорність — комп'ютери, що мають багато обчислювальних елементів в межах одної машини, а також кластери, MPP, та ґрід — системи що використовують багато комп'ютерів для роботи над одним завданням. Спеціалізовані паралельні архітектури іноді використовуються поряд з традиційними процесорами, для прискорення особливих задач.
Програми для паралельних комп'ютерів писати значно складніше, ніж для послідовних[5], бо паралелізм додає кілька нових класів потенційних помилок, серед яких є найпоширеніною стан гонитви. Комунікація, та синхронізація процесів зазвичай одна з найбільших перешкод для досягнення хорошої продуктивності паралельних програм.
Апаратне та програмне забезпечення
Апаратне
Основною пам'яттю в паралельному комп'ютері є як спільна пам'ять (розподілена між всіма обчислювальними елементами в одному адресному просторі), чирозподілена пам'ять (в якій кожен обчислювальний елемент має свій власний локальний адресний простір). Розподілена пам'ять відсилається до того факту, що пам'ять є логічно поділеною, хоча часто натякає і на те, що вона також розділена і фізично. Розподілена спільна пам'ять та віртуалізація пам'яті комбінують обидва підходи, де обчислювальний елемент має свою власну локальну пам'ять, та доступ до пам'яті інших процесорів. Доступ до локальної пам'яті зазвичай швидший ніж доступ до нелокальної.
Багатоядерний процесор — це процесор, що містить кілька ядер. Ці процесори відрізняються від суперскалярних процесорів, які можуть виконувати кілька інструкцій за такт з одного потоку інструкцій (ниті); на відміну від багатоядерних, що можуть за такт виконувати кілька інструкцій з різних нитей. Кожне ядро багатоядерного процесора потенційно може бути суперскалярним, тобто виконувати по кілька інструкцій з одної ниті.
Програмне
C++ Accelerated Massive Parallelism (скорочено C++ AMP) - бібліотека реалізована на основі DirectX 11 з відкритою специфікацією від компанії Microsoft для реалізації паралельних програм для гетерогенних систем на мові програмування C++. Для роботи програм написаних з використанням цієї бібліотеки необхідна операційної системи Windows 7 або Windows Server 2008 R2 або вищі, з встановленим DirectX 11, якщо у системі немає графічного адаптера на якому може бути запущений код то він буде запущений за допомогою центрального процесору і використовувати SSE інструкції. На даний час розробку програм можна робити лише за допомогою середовища Microsoft Visual Studio 2012, Windows 7, Windows 8, Windows Server 2008 R2 або Windows Server 2012 DirectX 11 Feature Level 11,0 або пізнішої версії апаратного
Для налагодження в емуляторі програмного забезпечення, Windows 8 або Windows Server 2012 не потрібно. Для налагодження на апаратне забезпечення, вам необхідно встановити драйвери для вашої відеокарти. Для отримання додаткової інформації див Налагодження GPU-код.
Опис
C ++ AMP (C ++ Прискорене масовим паралелізмом) прискорює виконання вашої C ++ код за користуючись даними паралельно обладнання, яке зазвичай присутній у вигляді графічного процесора (GPU) на дискретній відеокарті. Модель програмування C ++ AMP включає підтримку багатовимірних масивів, індексація, передачі пам'яті, і паркет. Він також включає в себе бібліотеку математичної фун...